<?php

namespace Admin\Model;

use Think\Model;

/**
 * 管理员角色模型类
 *
 * 角色相关业务逻辑封装
 *
 * @author: xuhui <xuh86@126.com>
 * @version: $Id$
 * @package: asoc.Admin.Model
 *
 */
class RoleModel extends Model {
	
	protected $tableName = "admin_role";
	
	
	/**
	 * 根据查询条件返回分页数据
	 * 
	 * @param mixed $map: 查询过滤条件
	 * @param int $currentPage:当前页
	 * @param int $pageSize: 每页大小
	 * @param string $sortBy: 排序条件
	 * @return array 
	 */
	public function getItemListBy($map,$currentPage,$pageSize,$sortBy=''){

		$items	=	NULL;
		$count	=	0;			//总条数
		
	
		$sortBy	=	empty($sortBy) ? $this->getPk()." ASC " : $sortBy;
		
		$items	=	$this->where($map)->order($sortBy)->page($currentPage.','.$pageSize)->select();
		//echo $this->getLastSql();
		
		$count	=	$this->where($map)->count();
		
		return array('items'=>$items,'count'=>$count);
	}
	
	
	
	/**
	 * 
	 * 根据角色id获取角色信息
	 * @param int $id
	 * @return array
	 */
	public function getItemById($id){
		
		$role		=	NULL;
		
		if($id>0){
			
			$role	=	$this->find($id);
			
			//角色拥有的权限列表
			$role['access']	=	$this->getRoleAccessList($id);
			
			//角色下面的管理员
			$role['user']	=	$this->getRoleUserList($id);
		}
		
		return $role;
	}
	
	
	/**
	 * 获取角色所有拥有的权限
	 * @param int $role_id:角色id
	 * @return array
	 */
	public function getRoleAccessList($role_id){
		
		$access		=	NULL;
		
		if($role_id>0){
			
			
			$actionList		=	M('AdminRoleAction')->where("`role_id`={$role_id}")->select();
			
			if($actionList){
				
				$sysMenu	=	D('SysMenu');
				foreach ($actionList as $key=>$val){
					
					$access[]	=	$sysMenu->find($val['action_id']);
				}
				
			}
			
		}
		return $access;
	}

	
	
	/**
	 * 获取属于某个角色的用户
	 * @param int $role_id:角色id
	 * @return array
	 */
	public function getRoleUserList($role_id){
		
		$users		=	NULL;
		
		if($role_id>0){
			
			$userList	=	M('AdminUserRole')->where("`role_id`={$role_id}")->select();
			
			if($userList){
				
				$admin		=	D('Admin');
				foreach ($userList as $key=>$val){
					
					$users[]	=	$admin->getAdminByUid($val['user_id']);
				}
			}
			
			
		}
		return $users;
	}
	
	
	/**
	 * 保存新增和编辑角色
	 * @param array $data:需要保存的数组
	 * @return array
	 */
	
	public function actionSave($data){
		
		$status		=	0;
		$msg		=	'';	
		
		$pk			=	$this->getPk();		//主键
		$fileds		=	$this->getDbFields();
		
		if(isset($data[$pk])&& $data[$pk]>0){		// 修改

			for($i=0;$i<count($fileds);$i++){
				
				$filed	=	$fileds[$i];
				if($filed != "module" && $filed != "parent_id" ){
					
					$vo[$filed]	=	$data[$filed];
						
				}
			}
			
			$this->where($pk."=".$data[$pk])->save($vo);
		
		}else{
			
			for($i=0;$i<count($fileds);$i++){
			
				$filed	=	$fileds[$i];
						
				$vo[$filed]	=	$data[$filed];
			}
				
			$newId		=	$this->add($vo);
			
			$status		=	$newId > 0 ? 1 : 2;
			$msg		=	$newId > 0 ? "" : "添加出错";
		}
		
		
		return array('status'=>$status,'msg'=>$msg);
	}
	

}

?>